home *** CD-ROM | disk | FTP | other *** search
/ GameStar 2004 April / Gamestar_61_2004-04_dvdb.iso / DVDStar / Editace / hltp.exe / {app} / Source Code / Zoners Half-Life Tools / hlcsg / csg.h < prev    next >
C/C++ Source or Header  |  2002-12-09  |  7KB  |  290 lines

  1. #ifndef HLCSG_H__
  2. #define HLCSG_H__
  3.  
  4. #if _MSC_VER >= 1000
  5. #pragma once
  6. #endif
  7.  
  8. #include <deque>
  9. #include <string>
  10. #include <map>
  11.  
  12. #include "cmdlib.h"
  13. #include "messages.h"
  14. #include "win32fix.h"
  15. #include "log.h"
  16. #include "hlassert.h"
  17. #include "mathlib.h"
  18. #include "scriplib.h"
  19. #include "winding.h"
  20. #include "threads.h"
  21. #include "bspfile.h"
  22. #include "blockmem.h"
  23. #include "filelib.h"
  24. #include "boundingbox.h"
  25. // AJM: added in
  26. #include "wadpath.h"
  27.  
  28. #ifndef DOUBLEVEC_T
  29. #error you must add -dDOUBLEVEC_T to the project!
  30. #endif
  31.  
  32. #define DEFAULT_BRUSH_UNION_THRESHOLD 0.0f
  33. #define DEFAULT_TINY_THRESHOLD        0.5
  34. #define DEFAULT_NOCLIP      false
  35. #define DEFAULT_ONLYENTS    false
  36. #define DEFAULT_WADTEXTURES true
  37. #define DEFAULT_SKYCLIP     true
  38. #define DEFAULT_CHART       false
  39. #define DEFAULT_INFO        true
  40.  
  41. #ifdef ZHLT_NULLTEX // AJM
  42. #define DEFAULT_NULLTEX     true
  43. #endif
  44.  
  45. #ifdef HLCSG_CLIPECONOMY // AJM
  46. #define DEFAULT_CLIPNAZI    true
  47. #endif
  48.  
  49. #ifdef HLCSG_AUTOWAD //  AJM
  50. #define DEFAULT_WADAUTODETECT false
  51. #endif
  52.  
  53. #ifdef ZHLT_DETAIL // AJM
  54. #define DEFAULT_DETAIL      true
  55. #endif
  56.  
  57. #ifdef ZHLT_PROGRESSFILE // AJM
  58. #define DEFAULT_PROGRESSFILE NULL // progress file is only used if g_progressfile is non-null
  59. #endif
  60.  
  61. // AJM: added in
  62. #define UNLESS(a)  if (!(a))
  63.  
  64. #ifdef SYSTEM_WIN32
  65. #define DEFAULT_ESTIMATE    false
  66. #endif
  67.  
  68. #ifdef SYSTEM_POSIX
  69. #define DEFAULT_ESTIMATE    true
  70. #endif
  71.  
  72. #define BOGUS_RANGE    8192
  73.  
  74. typedef struct
  75. {
  76.     vec3_t          normal;
  77.     vec3_t          origin;
  78.     vec_t           dist;
  79.     planetypes      type;
  80. } plane_t;
  81.  
  82.  
  83.  
  84. typedef struct
  85. {
  86.     vec3_t          UAxis;
  87.     vec3_t          VAxis;
  88.     vec_t           shift[2];
  89.     vec_t           rotate;
  90.     vec_t           scale[2];
  91. } valve_vects;
  92.  
  93. typedef struct
  94. {
  95.     float           vects[2][4];
  96. } quark_vects;
  97.  
  98. typedef union
  99. {
  100.     valve_vects     valve;
  101.     quark_vects     quark;
  102. }
  103. vects_union;
  104.  
  105. extern int      g_nMapFileVersion;                         // map file version * 100 (ie 201), zero for pre-Worldcraft 2.0.1 maps
  106.  
  107. typedef struct
  108. {
  109.     char            txcommand;
  110.     vects_union     vects;
  111.     char            name[32];
  112. } brush_texture_t;
  113.  
  114. typedef struct side_s
  115. {
  116.     brush_texture_t td;
  117.     vec_t           planepts[3][3];
  118. } side_t;
  119.  
  120. typedef struct bface_s
  121. {
  122.     struct bface_s* next;
  123.     int             planenum;
  124.     plane_t*        plane;
  125.     Winding*        w;
  126.     int             texinfo;
  127.     bool            used;                                  // just for face counting
  128.     int             contents;
  129.     int             backcontents;
  130.     BoundingBox     bounds;
  131. } bface_t;
  132.  
  133. // NUM_HULLS should be no larger than MAX_MAP_HULLS
  134. #define NUM_HULLS 4
  135.  
  136. typedef struct
  137. {
  138.     BoundingBox     bounds;
  139.     bface_t*        faces;
  140. } brushhull_t;
  141.  
  142. typedef struct brush_s
  143. {
  144.     int             entitynum;
  145.     int             brushnum;
  146.  
  147.     int             firstside;
  148.     int             numsides;
  149.  
  150. #ifdef HLCSG_CLIPECONOMY // AJM
  151.     unsigned int    noclip; // !!!FIXME: this should be a flag bitfield so we can use it for other stuff (ie. is this a detail brush...)
  152. #endif
  153.  
  154.     int             contents;
  155.     brushhull_t     hulls[NUM_HULLS];
  156. } brush_t;
  157.  
  158.  
  159. //=============================================================================
  160. // map.c
  161.  
  162. extern int      g_nummapbrushes;
  163. extern brush_t  g_mapbrushes[MAX_MAP_BRUSHES];
  164.  
  165. #define MAX_MAP_SIDES   (MAX_MAP_BRUSHES*6)
  166.  
  167. extern int      g_numbrushsides;
  168. extern side_t   g_brushsides[MAX_MAP_SIDES];
  169.  
  170. extern void     TextureAxisFromPlane(const plane_t* const pln, vec3_t xv, vec3_t yv);
  171. extern void     LoadMapFile(const char* const filename);
  172.  
  173. //=============================================================================
  174. // textures.c
  175.  
  176. typedef std::deque< std::string >::iterator WadInclude_i;
  177. extern std::deque< std::string > g_WadInclude;  // List of substrings to wadinclude
  178.  
  179. extern void     WriteMiptex();
  180. extern int      TexinfoForBrushTexture(const plane_t* const plane, brush_texture_t* bt, const vec3_t origin);
  181.  
  182. //=============================================================================
  183. // brush.c
  184.  
  185. extern brush_t* Brush_LoadEntity(entity_t* ent, int hullnum);
  186. extern contents_t CheckBrushContents(const brush_t* const b);
  187.  
  188. extern void     CreateBrush(int brushnum);
  189.  
  190. //=============================================================================
  191. // csg.c
  192.  
  193. extern bool     g_chart;
  194. extern bool     g_onlyents;
  195. extern bool     g_noclip;
  196. extern bool     g_wadtextures;
  197. extern bool     g_skyclip;
  198. extern bool     g_estimate;         
  199. extern const char* g_hullfile;        
  200.  
  201. #ifdef ZHLT_NULLTEX // AJM:
  202. extern bool     g_bUseNullTex; 
  203. #endif
  204.  
  205. #ifdef ZHLT_DETAIL // AJM
  206. extern bool g_bDetailBrushes;
  207. #endif
  208.  
  209. #ifdef HLCSG_CLIPECONOMY // AJM:
  210. extern bool     g_bClipNazi; 
  211. #endif
  212.  
  213. #ifdef ZHLT_PROGRESSFILE // AJM
  214. extern char*    g_progressfile ;
  215. #endif
  216.  
  217. extern vec_t    g_tiny_threshold;
  218. extern vec_t    g_BrushUnionThreshold;
  219.  
  220. extern plane_t  g_mapplanes[MAX_MAP_PLANES];
  221. extern int      g_nummapplanes;
  222.  
  223. extern bface_t* NewFaceFromFace(const bface_t* const in);
  224. extern bface_t* CopyFace(const bface_t* const f);
  225.  
  226. extern void     FreeFace(bface_t* f);
  227.  
  228. extern bface_t* CopyFaceList(bface_t* f);
  229. extern void     FreeFaceList(bface_t* f);
  230.  
  231. extern void     GetParamsFromEnt(entity_t* mapent);
  232.  
  233. //=============================================================================
  234. // wadinclude.c
  235. // passed 'filename' is extensionless, the function cats ".wic" at runtime
  236.  
  237. extern void     LoadWadincludeFile(const char* const filename);
  238. extern void     SaveWadincludeFile(const char* const filename);
  239. extern void     HandleWadinclude();
  240.  
  241. //=============================================================================
  242. // brushunion.c
  243. void            CalculateBrushUnions(int brushnum);
  244.  
  245. //============================================================================
  246. // hullfile.cpp
  247. extern vec3_t   g_hull_size[NUM_HULLS][2];
  248. extern void     LoadHullfile(const char* filename);
  249.  
  250. #ifdef HLCSG_WADCFG // AJM: 
  251. //============================================================================
  252. // wadcfg.cpp
  253.  
  254. extern void     LoadWadConfigFile();
  255. extern void     ProcessWadConfiguration();
  256. extern bool     g_bWadConfigsLoaded;
  257. extern void     WadCfg_cleanup();
  258.  
  259. #define MAX_WAD_CFG_NAME 32
  260. extern char     wadconfigname[MAX_WAD_CFG_NAME];
  261.  
  262. //JK: needed in wadcfg.cpp for *nix..
  263. #ifndef SYSTEM_WIN32
  264. extern char *g_apppath;
  265. #endif
  266.  
  267. //JK: 
  268. extern char *g_wadcfgfile;
  269.  
  270. #endif // HLCSG_WADCFG
  271.  
  272. #ifdef HLCSG_AUTOWAD
  273. //============================================================================
  274. // autowad.cpp      AJM
  275.  
  276. extern bool     g_bWadAutoDetect; 
  277. extern int      g_numUsedTextures;
  278.  
  279. extern void     GetUsedTextures();
  280. extern bool     autowad_IsUsedTexture(const char* const texname);
  281. //extern bool     autowad_IsUsedWad(const char* const path);
  282. //extern void     autowad_PurgeName(const char* const texname);
  283. extern void     autowad_cleanup();
  284. extern void     autowad_UpdateUsedWads();
  285.  
  286. #endif // HLCSG_AUTOWAD
  287.  
  288. //============================================================================
  289. #endif//HLCSG_H__
  290.